package hoja.de.trabajo;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 *ALGORITMOS Y ESTRUCTURA DE DATOS
 * SECCION 10
 * CATEDRATICO ING. ROBLES FLORES
 * HOJA DE TRABAJO 2
 * VICTOR FUENTES 12298
 * YUCELY BEB 12537
 * MARCOS LOPEZ 12519
 */
//package hoja.de.trabajo.2.pkg1;

import java.util.Scanner;
import java.util.*;
import java.io.*;

public class DRIVERhj2 {
    public static void main (String[] args)throws FileNotFoundException{
        String linea="";//variable para la linea del codigo del archivo
        StringBuffer nlinea;//variable para la linea del codigo del archivo
        Scanner archivo;//objeto tipo scanner para leer archivo
        int largo=0;//variable para largo del StringBuffer
        
       Postfix logica=new Postfix();//objeto para el control logico
        
       
        
        try{
             archivo=new Scanner (new File("datos.txt"));
             
             while(archivo.hasNext()){
                //leer.Leer();//metodo para extraer las lineas del archivo
                
                linea=archivo.nextLine();//se agrega a String la linea actual del archivo
                nlinea=new StringBuffer(linea);//se agrega a StringBuffer la linea actual del archivo
                largo=nlinea.length();
                
                logica.setLargo(largo);//envio del largo del stringbuffer de la linea actual a la clase postfix
                logica.agregar(nlinea);//envio de Stringbuffer a metodo para agregar a pila
                logica.reverso();//metodo para usar pila auxiliar para dar vuelta a valores
                logica.operar();//metodo para decodificar la linea de texto y obtener resultados
               
                logica.RESET();//metodo para vaciar pilas y demas variables
                
            }
            
            
            
            
        }catch(FileNotFoundException e){
            System.out.println("No se encontro archivo");
        }
        //impresion de resultados 
        //logica.imprimirPila();
        logica.imprimitResultado();//impresion de pila con resultados de operaciones
       //<>
        
        
        
       //inicio de codigo para probar uso de listas con punteros
        
        
       logica.RESET();
       
        String line="";//variable para la linea del codigo del archivo
        StringBuffer nline;//variable para la linea del codigo del archivo
        Scanner file;//objeto tipo scanner para leer archivo
        int lenght=0;//variable para largo del StringBuffer
        
       Infix logica2=new Infix();//objeto para el control logico
        
       Postfix logica3=new Postfix();//volver a instanciar objeto de logica
        
        try{
             file=new Scanner (new File("infix.txt"));
             
             while(file.hasNext()){
                //leer.Leer();//metodo para extraer las lineas del archivo
                
                line=file.nextLine();//se agrega a String la linea actual del archivo
                nline=new StringBuffer(line);//se agrega a StringBuffer la linea actual del archivo
                lenght=nline.length();
                logica2.setLargo(lenght);
                logica2.agregar(nline);//se agrega la linea StringBuffer de expresion infix a lista pila, esta trabaja con punteros
                 
                //System.out.println(logica2.getExpPostfixTamano());
                //System.out.println(logica2.imprmirExpPostfix());
                
                logica3.setLargo(logica2.getExpPostfixTamano());//envio del largo del stringbuffer de la linea actual a la clase postfix
                
                logica3.agregar(logica2.imprmirExpPostfix());//envio de Stringbuffer a metodo para agregar a pila
                logica3.reverso();//metodo para usar pila auxiliar para dar vuelta a valores
                logica3.operar();//metodo para decodificar la linea de texto y obtener resultados
               
                
                logica3.RESET();
                logica2.Reset();
                
                
                
                
               
            }
            
            
            
            
        }catch(FileNotFoundException e){
            System.out.println("No se encontro archivo");
        }
        
        
        
       
        
        logica3.imprimitResultado();
        
        
        
    }
}
